2023. 04. 13., 서울 관악구 신림동 산 169-48.

파이썬의 미개한 타입 시스템

우유 한 팩을 점심으로 종종 먹습니다. 매 끼니마다 제대로된 식사를 해야 된다는 신념이 원래는 있었습니다. 하지만 개강을 맞아 길어진 학식 줄은 신념을 깨부수기에 충분할 정도로 길어졌어요. 연구실에서 학식까지 왔다갔다 하는게 귀찮기도 했고요. 그래서 그냥 학생회관 편의점에서 우유를 자주 사먹습니다. 아직까지는 괜찮은 것 같아요.

출근해서는 랩미팅 준비를 했습니다. 데이터를 보기 좋게 가공했어요. 통상적인 보기 좋은 수준에 다다르지는 못했지만 원본보다는 보기 좋으니 된 것 아닐까요. 미팅 때 데이터를 바탕으로 이것저것 보고를 하면서 결과가 좋지 못했음을 고했습니다. 결과가 좋지 못한 건 사실 그리 나쁜 소식은 아니었어요. 더 다양한 접근 방식을 이용해볼 수 있는 주제라는 뜻이니까요. 교수님과 액션 아이템을 설정했습니다.

우리 연구실은 매주 청소를 합니다. 내가 이번주에 맡은 건 약간 관리자 같은 역할이었어요. 청소를 한번도 해본 적 없어서 관리 역할을 해낼 수 있을까 걱정이 많았는데, 다행히 다른 선배님이 섬세하게 알려주셔서 잘 해낼 수 있었습니다. 앞으로 나도 저런 선배가 될 수 있어야할텐데.

2024. 03. 04., 경북 포항시 남구 청암로 77 학생회관.

저녁도 편의점에서 대충 때우고 오픈 세미나 포스터를 만들었습니다. 명색이 오픈 세미나인데 교내 구성원 모두를 대상으로 하는 홍보 매체가 없는 것 같아서요. 이번 포스터는 띠 형태로 만들었습니다. A4 1장에 가로로 긴 4개의 띠가 들어가는 형태로 만들었어요. 다른 단체들이 모두 일반 인쇄용지 형태로 포스터를 만들 때 띠 형태로 만들면 눈에 띄지 않을까 생각이 들어서 그랬습니다. 활용하기도 좋아요. 문에 안내선 형태로 붙이거나 여러 장을 이용해서 패턴 형태로 붙일 수 있습니다. 초안을 만든 후 동아리 친구들에게 피드백을 부탁했어요.

2024. 03. 04., 경북 포항시 남구 청암로 77 학생회관.

피드백 받는 사이에 러닝을 다녀왔습니다. 대운동장에서 뛰려고 했는데 사람이 많아서 도서관 앞 지곡로를 끼고 철길숲을 왕복하는 코스를 짜봤어요. 차도가 중간에 끼어있는 것을 제외하면 전 구간이 평지라 괜찮았습니다. 무엇보다 러닝이 끝났을 때 바로 방으로 돌아갈 수 있다는 점이 매력적이었어요. 앞으로 이 코스를 애용할 것 같습니다.

2024. 03. 04., 경북 포항시 남구 청암로 77 학생회관.

동아리방에 돌아와서 피드백을 반영하고 포스터를 붙일 준비를 했습니다. A4 용지를 잘라야했기에 칼질을 했어요. 칼선은 대충 접어서 표시하면 되겠지 안일하게 생각했다가 다 망치고 다시 인쇄했습니다. 칼선이 있고 없고 차이가 정말 크더군요. 40장 정도를 만들었어요. 캠퍼스를 돌아다니면서 이곳저곳에 붙였습니다. 새내기가 된 것 같고 감회가 새로웠습니다.

수면 시간이 패턴화 된 것 같아요. 꼭 7시간에서 8시간 정도 자고 자면 잠에서 깹니다. 오늘도 그랬어요. 꼭 잠들고 8시간이 지난 후에 깼습니다. 자기 전에 스마트폰 계속 하다가 새벽 4시에 자는 습관을 고쳐보려고 노력하고 있는데, 개운한 아침이 주는 감정적 보상이 커서 습관을 금방 고칠 수 있을지도 모르겠습니다.

1교시 수업이 25분만에 끝나서 아점을 먹었습니다. 편의점에서 우유를 사는데 옆에 모닝두부가 있길래 사봤어요. 두부 자체의 맛은 나쁘지 않았는데, 동봉되어있던 오리엔탈 드레싱이 너무 별로였습니다. 너무 자극적이었어요. 다음에는 사서 그냥 두부만 먹을 것 같습니다.

2교시 수업은 꽤나 재밌게 들었어요. 마치 처음 보는 개념인 것처럼 새로웠습니다. 분명 학부 때 한 내용들을 하고 있는데 말이죠.

연구실에 출근해서는 액션 아이템을 소화하기 위해 코드를 열심히 짰습니다. 함수형으로 생각하는 연습도 할 겸 꼬리재귀를 적극적으로 이용하고 있는데, 다 짜고 나서 코드를 돌려보니 콜 스택이 모자라는 예외가 발생하더라고요. 찾아보니 파이썬 인터프리터는 꼬리재귀 최적화를 하지 않는다고 합니다. 귀도 반 로섬씨가 그딴 최적화는 파이썬에 들이지 않을 것이라고 못 박았더라고요. 최적화 할 방법이 없나 찾아보다 커스텀 예외를 이용해서 언롤링하는 방법을 찾았는데, 잘 적용이 되지 않아서 일단 포기하고 임시방편으로 콜 스택의 사이즈를 임의로 늘려두었습니다.

학식을 먹고 퇴근했습니다. 아무것도 하지 않았어요. 누워서 유튜브만 돌려봤습니다. 러닝을 갈까 하는 생각이 잠깐 생겼다가 없어졌습니다. 누워서 유튜브만 다시 돌려봤습니다. 제 정신을 유지하기 위해서는 가끔 이런 휴식을 취해줘야 하는 것 같습니다.

아침에 미팅이 있었지만 논의할 것은 많이 없었어요. 월요일에 랩미팅이 있다보니 수요일 미팅에서는 언급할 사항이 많이 줄어드는 것 같습니다. 그냥 부우의 이야기를 주로 들었습니다.

화요일에 작업하던 코드를 완성하는걸 목표로 코딩을 시작했습니다. 화요일에 꼬리재귀라고 생각하며 짜 둔 코드를 다시 보니 아니더라고요. 정신이 영 없었나봅니다. 재귀 호출이 되는 구간을 약간 고쳤고 유의미한 성능 향상을 이룰 수 있었어요. 원래 설정에서 콜 스택이 터져나가는건 피할 수 없었지만.

파이썬의 미개한 타입 시스템과 씨름하는데 가장 많은 시간을 보냈습니다. 왜 파이썬에는 제네릭 함수의 제네릭 타입을 명시적으로 고정시킬 수 없는건지 모르겠습니다. 파라미터가 단순히 T 타입이면 문제가 없는데 U[T]와 같이 합성된 타입일 때 코드가 더러워져서 골치가 아픕니다. 3.12 버전에서 type parameter syntax가 생긴 걸 보면 프론트엔드 수준에서 아주 불가능한 건 아닌 것 같은데. 아니면 간결하게 표현할 방법을 아직 내가 찾지 못한 것 일수도 있고요. 어차피 다른 고차 함수의 인자로 들어갈 함수라, 고차 함수에서 이용할 때에는 타입이 정해지는 점을 이용해서 타입 추론의 허점을 우회시켜두긴 했지만 찝찝한 건 피할 수 없습니다.

그래도 다행히 기능 개발이 생각보다 빨리 되었습니다. 쿼리 함수가 꿈에서 상상한 대로 구현되었어요. 오래간만의 예쁜 코드에 기분이 좋아졌습니다.

2024. 03. 06., 경북 포항시 남구.

학식을 먹고 태우와 러닝을 했습니다. 지곡로를 끼고 철길숲으로 가는 코스를 다시 타봤어요. 역시 괜찮은 것 같습니다.

2024. 03. 06., 경북 포항시 남구 청암로 77 기숙사.

러닝이 끝나고는 태우 방에서 맥주와 함께 패키징 작업을 했어요. 낮에 짠 코드가 괜찮은 것 같아서 퍼블릭 레포로 공개하고 싶었거든요. 공개할 수 있는 부분들을 가져와서 모듈들을 정리하고 리드미도 썼습니다. 코드를저장소에 푸시하고 꽤나 뿌듯함을 느꼈어요. 동아리 디스코드에도 자랑했는데 컬그가 해커뉴스에 올려버렸습니다. 특별히 무슨 일이 일어나진 않았어요.

내일 딥러닝 시간에 퀴즈를 볼 것 같아서 슬라이드도 리뷰했습니다.

스스로에게 대견한 하루였습니다.

조교님이 앞에서 종이더미들을 정리하는 걸 보고 어젯밤에 슬라이드를 리뷰하길 잘했다는 생각이 들었습니다. 표지와 함께 스테이플러로 지철된 두툼한 퀴즈를 받아들고 20분이라는 불합리한 시간에 위기를 느꼈습니다. 다행히 두툼함은 종이가 두꺼운 탓이었으나 내가 아는 건 한없이 얇더라고요. 기초적인 미적분을 까먹은 나를 확인시켜줬습니다.

딥러닝 텀 프로젝트 팀을 구성해야해서 수업을 함께 듣는 동아리 친구와 팀을 하기로 했습니다. 그런데 친구가 같은 랩 사람도 껴도 되냐고 물어보더군요. 거절할 이유는 없으니까 같이 하자고 말했어요. 다만 친구가 생명과라고 내가 말했던가요. 딥러닝 프로젝트로 꼼짝없이 생명 관련 주제를 하게 생겼습니다.

기계학습 시간에 수업을 듣다가 교수님께 슬랙으로 DM이 왔어요. 인건비가 확정되었다는 소식이었습니다. 이젠 진짜 월급을 받으면서 연구를 한다는 자각이 생기더라고요. 앞으로 더 열심히 해야겠다는 생각이 들었습니다.

액션 아이템을 처리하기 위해 어제 완성한 라이브러리를 이용해서 코딩을 했습니다. 라이브러리를 만들면서 파이썬에서 iterator를 이용한 lazyness를 이해한 이후로 파이썬 코딩이 10배는 재밌어졌습니다. 코딩 실력은 step function처럼 늘어난다고 생각하는데, 또 한번 계단 한 칸을 오른 기분이었어요. 오래간만에 코딩이 재밌어졌습니다. Lazyness의 즐거움을 알려준 함수형 프로그래밍과 스칼라에게 다시 한번 감사를.

2024. 03. 05., 경북 포항시 남구. 2024. 03. 05., 경북 포항시 남구.

태우와 러닝을 또 했습니다. 태우는 지곡로 코스가 마음에 들지 않았나봐요. 철길숲만 이용한 코스를 탔습니다. 함께 뛰는 친구가 있어서 성장이 빠른 것 같습니다. 같이 뛸 때마다 항상 둘이서 같은 생각을 해요. “쟤 왜 페이스 안 줄이지?”

우리 랩은 이번주부터 금요일마다 세미나 시간을 가집니다. 정기화되었어요. 동기 분이 두 가지 논문을 가져왔습니다. 두번째 논문이 전하고자 하는 메시지는 직관적으로 이해할 수 있어서 듣기 수월했습니다. 하지만 첫번째 논문은 그렇지 않았어요. 수식의 흐름을 이해해야했고 각각의 역할을 알아야해서 배경지식이 없는 나에게는 어려웠습니다. 수학적인 부분은 그럴 수 있어요. 그런데 나 머신러닝에 관한 배경지식도 많이 없더라고요. 공부해야할 동기는 너무나도 많이 얻는데 노력하지 않는 나의 모습이 참으로 바보같지 않나요.

교수님과 밥을 먹고 지도학생들끼리 커피를 마셨어요. 다른 랩의 교수님이 정년 퇴임을 하시면서 6년차 선배가 우리 랩으로 옮겨오게 되어서, 인사도 할 겸 이야기를 나눴습니다. 나는 장래에 대해 큰 궁금함이 없었는데, 다른 두 동기 분들은 장래에 대해 고민이 많아보이더라고요. 선배의 등장에 많은 질문들을 했고, 만족스러운 답변을 얻어갔습니다. 나는 너무 장래에 대해 고민을 하지 않는게 아닌가 위기감을 느꼈습니다.

그래도 선배한테 칭찬도 들었어요. 선배가 이전 랩에 있을 때 그 랩 구성원 분과 과제연구를 함께 했었는데, 그 분이 선배에게 “그 교수님 랩에 과제연구 잘 했었던 학생있다”고 말했다고 하더라고요. 학업과 관련된 칭찬은 오래간만이라 기분이 좋았습니다.

나는 나만의 것

요즘 뮤지컬 넘버를 많이 듣습니다. 뮤지컬에 대해 잘 몰라서 플레이리스트들을 찾아보며 좋은 넘버가 있으면 기록해두고 들어요. 고등학생 때에는 넘버를 그렇게 좋아하지 않았는데, 취향은 계속해서 변하나봅니다. 뚜렷한 주제의식을 가지고 풍부한 가사와 함께 전달해내는 가사가 좋아요. 솔직한 감정을 드러내는 것들이 좋아진 것 같습니다.

꼭 넘버가 아니더라도 그런 것 같아요.


권민재

WWW 사이버디지탈 COM